package com.qfmy.app.sms;

import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * @author 清风明月
 * @Package com.lzw.breezeNovel.common.sms
 * @date 2025/4/13
 * @description 阿里云短信配置类
 */
@SuppressWarnings("all")
@Configuration
@EnableConfigurationProperties(AliyunSMSProperties.class)
@ConditionalOnProperty(name = "aliyun.sms.endpoint")
public class AliyunSMSConfig {
    @Autowired
    private AliyunSMSProperties aliyunSMSProperties;

    /**
     * 创建阿里云客户端实例
     * 该方法通过阿里云的访问密钥ID、访问密钥密钥和终点信息来配置并创建一个阿里云客户端实例
     * 这个实例可以用于发送短信等操作
     * @return Client 返回配置好的阿里云客户端实例
     * @throws RuntimeException 如果在创建客户端实例时发生异常，将会抛出运行时异常
     */
    @Bean
    public Client createClient() {
        // 初始化配置对象
        Config config = new Config();
        // 设置访问密钥ID
        config.setAccessKeyId(aliyunSMSProperties.getAccessKeyId());
        // 设置访问密钥密钥
        config.setAccessKeySecret(aliyunSMSProperties.getAccessKeySecret());
        // 设置终点信息
        config.setEndpoint(aliyunSMSProperties.getEndpoint());

        // 声明客户端对象
        Client client = null;
        try {
            // 使用配置信息创建客户端实例
            client = new Client(config);
        } catch (Exception e) {
            // 如果创建过程中发生异常，抛出运行时异常
            throw new RuntimeException(e);
        }

        // 返回配置好的客户端实例
        return client;
    }

}
